package com.cskaoyan.javase.basic._10loop;

/**
 * 小试牛刀
 * 珠峰的高度是8848m，假设有一张足够大可折叠的纸张，初始厚度是0.01m。
 * 求解这张纸折叠多少次，纸张的厚度开始超过珠峰？
 *
 * for循环和while循环是等价的
 * 但是do...while完全不同
 * 区别在于:
 *      for,while必须先判断再执行,所以可能出现一次都不执行循环的情况
 *      do...while是先执行再判断,所以至少执行一次循环
 *
 * 建议优先考虑使用for循环,因为它有快捷键
 * 关于for循环,细节:
 *      1.for循环结构中三个语句都是可以省略的,但是";"不能省略.
 *      for (;;){} 是一个典型的死循环.
 *
 *      2.for和if一样,同样在只有一条循环语句时,可以省略大括号
 *      但是不要这么做(知道有这个语法就够了)
 *
 *      3.对于for循环而言,最常用的循环控制变量是i
 *          如果有嵌套循环,就用j,k
 *
 * @since 14:32
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        int height = 884800;
        int initHeight = 1;
        // 统计次数,需要计数器
        int count = 0;
        while (initHeight < height) {
            // 每循环一次,厚度乘以2
            initHeight *= 2;
            count++;
        }
        System.out.println(count);

        // 使用for循环求解
        int count2 = 0;
        for (int i = 1; i < height; i *= 2) {
            count2++;
        }
        System.out.println(count2);

        // for循环的快捷键用fori
        for (int i = 0; i < 10; i++) {
        }
        for (;;){}
    }
}
